/**
 * @Author: 吕庆龙
 * @Date: 2019/12/12 17:04
 * <p>
 * 功能描述:
 */
public class Interview_013 {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7};
        reOrderArray(array);
    }

    /**
     * 1.题目
     * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有的奇数位于数组的前半部分，
     * 所有的偶数位于数组的后半部分，并保证奇数和奇数，偶数和偶数之间的相对位置不变
     * <p>
     * 2.考点:
     *
     * <p>
     * 3.解析
     *
     *  运行时间：19ms
     *  占用内存：9336k
     */
    public static void reOrderArray(int[] array) {
        int length = array.length;
        int[] a = new int[length]; //记录奇数
        int[] b = new int[length]; //记录偶数
        int ka = 0;
        int kb = 0;
        for (int i = 0; i < length; i++) {
            if ((array[i] & 1) == 1) {
                a[ka++] = array[i];
                continue;
            }
            b[kb++] = array[i];
        }
        System.arraycopy(a, 0, array, 0, ka);
        System.arraycopy(b, 0, array, ka, kb);

    }

    /**
     * 感觉%和&效率差不多
     */
    public static void reOrderArray1(int [] array) {
        int length = array.length;
        int[] a = new int[length]; //记录奇数
        int[] b = new int[length]; //记录偶数
        int ka = 0;
        int kb = 0;
        for (int i = 0; i < length; i++) {
            if ((array[i] % 2) == 1) {
                a[ka++] = array[i];
                continue;
            }
            b[kb++] = array[i];
        }
        System.arraycopy(a, 0, array, 0, ka);
        System.arraycopy(b, 0, array, ka, kb);
    }

}
